package company_request

import (
	"os"
	"private-go-sdk/http"
)

type CompanyauthSubmitbasicinfoRequest struct {
	// <ext>core:true</ext> 【认证模式】认证模式 【作用】 可控制法人单位是初次认证还是重复认证 1、false：即法人单位为初次认证，之前未在系统中进行过认证 2、true：即法人单位为重复认证，法人单位已经在系统中成功认证过，可能因为变名称或者变更法定代表人等原因需要重新认证 【传参】 取值范围：false（初次认证），true（重复认证）；不传值默认为：false（初次认证）
	Repeat string `json:"repeat,omitempty"`
	// <ext>core:true;format:string</ext> 【法人单位id】法人单位id 【作用】 1、认证模式为初次认证时，可定位认证审核失败的法人单位，匹配成功后将以本次提交的认证信息继续进行认证。如果不是以上情况，初次认证时传入的法人单位id不生效。在这种场景下同时传入companyId（法人单位id）、openCompanyId（第三方业务系统法人单位id）时，则只取companyId进行匹配 2、认证模式为重复认证时，用于定位需要重复认证的法人单位 【传参】 repeat（认证模式）为true（重复认证）时必传。
	CompanyId *int64 `json:"companyId,omitempty"`
	// <ext>core:true</ext> 【单位类型】单位类型 【作用】 1、企业：有限责任公司、股份有限公司、个人独资企业等请选择此类型  2、个体工商户 ：个体工商户请选择此类型 3、政府 :国务院或地方政府组成部门以及直属机构，例如外交部、海关、税务、民政局等请选择此类型 4、其他大陆组织：社会团体、民办非企业单位例如工会、妇联、工商联等请选择此类型 5、事业单位：教育、科技、文化、卫生、社会福利等请选择此类型 6、港澳台及海外组织 【传参】 取值范围：1（企业），2（个体工商户），3（政府），4（其他大陆组织），5（事业单位），6（港澳台及海外组织）；不传值默认为：1（企业）。
	CompanyType string `json:"companyType,omitempty"`
	// <ext>core:true</ext> 【地区】地区 【作用】 若认证单位不是大陆组织，请传入其所属地区，非大陆单位只能使用正向打款认证，其余认证方式暂不支持 【传参】 取值范围：CN（中国大陆），TW（中国台湾），HK（中国香港），MO（中国澳门），OTHER（其他国家/地区）；不传值默认为：CN（中国大陆）
	Area string `json:"area,omitempty"`
	// <ext>core:true</ext> 【法人单位名称】法人单位名称 【作用】 请传入营业执照上的真实单位名称
	Name string `json:"name"`
	// <ext>core:true</ext> 【统一社会信用代码/工商注册号】统一社会信用代码/工商注册号 【作用】 1、请传入营业执照上的统一社会信用代码/工商注册号 2、若repeat（认证模式）为true（重复认证）时，统一社会信用代码不允许修改，该参数传值不生效
	RegisterNo string `json:"registerNo"`
	// <ext>core:true</ext> 【法定代表人姓名】法定代表人姓名 【作用】 请传入营业执照上的法定代表人姓名，若单位类型是个体工商户，请传入经营者姓名
	LegalPerson string `json:"legalPerson"`
	// <ext>core:true</ext> 【营业执照】营业执照 【作用】 请传入彩色原件或加盖公司公章的复印件 【传参】 支持的文件格式：jpg，jpeg，png，pdf。文件大小不超过10M。
	License *os.File `json:"license"`
	// <ext>core:true</ext> 【内外部单位】内外部单位 【作用】 若单位不存在时会创建单位，可通过该参数指定创建的单位为内部单位还是外部单位 1、INNER_COMPANY：即创建内部法人单位，为集团统一管理的内部单位 2、COMPANY：即创建外部法人单位 3、若单位已经存在，则该参数传值不生效 【传参】 取值范围：INNER_COMPANY（内部法人单位），COMPANY（外部法人单位）。
	TenantType string `json:"tenantType"`
	// <ext>core:true</ext> 【第三方业务系统法人单位id】第三方业务系统法人单位id 【作用】 1、可传入第三方业务系统法人单位id，不传值时会随机生成一个id，认证成功后该值会返回第三方业务系统； 2、若单位当前已有第三方业务系统法人单位id，则此参数传参不生效，也不会再生成一个新的id； 3、认证模式为初次认证时，可定位认证审核失败的法人单位，匹配成功后将以本次提交的认证信息继续进行认证。在这种场景下同时传入companyId（法人单位id）、openCompanyId（第三方业务系统法人单位id）时，则只取companyId进行匹配。
	OpenCompanyId string `json:"openCompanyId,omitempty"`
	// <ext>core:true</ext> 【印章管理员姓名】印章管理员姓名 【作用】 若单位认证申请人无权限管理印章，可在此处输入实际的印章管理员姓名，认证通过后由印章管理员负责管理单位内的印章。不传值时默认取申请人作为印章管理员 【传参】 若authorizer（印章管理员姓名）与authorizerCardNo（印章管理员证件号）传入其一，则另一个字段也必传
	Authorizer string `json:"authorizer,omitempty"`
	// <ext>core:true</ext> 【印章管理员证件号】印章管理员证件号 【作用】 若单位认证申请人无权限管理印章，可在此处输入实际的印章管理员证件号，认证通过后由印章管理员负责管理单位内的印章。不传值时默认取申请人作为印章管理员 【传参】 若authorizer（印章管理员姓名）与authorizerCardNo（印章管理员证件号）传入其一，则另一个字段也必传
	AuthorizerCardNo string `json:"authorizerCardNo,omitempty"`
	// <ext>core:true</ext> 【申请人姓名】申请人姓名 【作用】 即认证申请人姓名，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色
	Charger string `json:"charger"`
	// <ext>core:true;format:phone</ext> 【申请人手机号】申请人手机号 【作用】 即认证申请人手机号，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色 【传参】 1、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 2、同时传入手机号及邮箱时，按手机号>邮箱的优先级进行查询，若手机号查询到用户，则对应用户认证完成后更新姓名、证件号，此时邮箱会忽略；若手机号未查询到用户，此时会根据邮箱查询，若邮箱查询到用户，则对应用户认证完成后更新姓名、证件号，此时手机号会忽略；若手机号与邮箱均未查询到用户，则会将手机号、邮箱创建新用户并在用户认证完成后更新姓名、证件号。
	Mobile string `json:"mobile,omitempty"`
	// <ext>core:true;format:email</ext> 【申请人邮箱】申请人邮箱 【作用】 即认证申请人邮箱，用于记录申请认证的用户。若不单独传入印章管理员，则默认赋予申请人印章管理员的角色 【传参】 1、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 2、同时传入手机号及邮箱时，按手机号>邮箱的优先级进行查询，若手机号查询到用户，则对应用户认证完成后更新姓名、证件号，此时邮箱会忽略；若手机号未查询到用户，此时会根据邮箱查询，若邮箱查询到用户，则对应用户认证完成后更新姓名、证件号，此时手机号会忽略；若手机号与邮箱均未查询到用户，则会将手机号、邮箱创建新用户并在用户认证完成后更新姓名、证件号。
	Email string `json:"email,omitempty"`
	// 【是否计费】是否计费 【作用】 电子签章管理后台可对所有内部外部单位以及个人设置计费规则，收取相应的签署、证书、认证等费用，可标记单位是否计费 【传参】 取值范围：true（是），false（否）；不传值默认为：false(否)。
	Customer string `json:"customer,omitempty"`
	// 【法人单位创建成功是否通知】法人单位创建成功是否通知 【作用】 1、法人单位创建成功后，是否短信或邮件通知认证申请人，优先发送短信通知 2、若法人单位已经存在，则不发送该通知 【传参】 取值范围：false（不通知），true（通知）；不传值默认为：false（不通知）。
	Remind string `json:"remind,omitempty"`
}
func (obj CompanyauthSubmitbasicinfoRequest) GetUrl() string {
    return "/companyauth/submitbasicinfo"
}

func (obj CompanyauthSubmitbasicinfoRequest) GetHttpParameter() *http.HttpParameter {
    parameter := http.NewPostHttpParameter()
    parameter.AddParam("repeat", obj.Repeat)
    parameter.AddParam("companyId", obj.CompanyId)
    parameter.AddParam("companyType", obj.CompanyType)
    parameter.AddParam("area", obj.Area)
    parameter.AddParam("name", obj.Name)
    parameter.AddParam("registerNo", obj.RegisterNo)
    parameter.AddParam("legalPerson", obj.LegalPerson)
    parameter.AddParam("tenantType", obj.TenantType)
    parameter.AddParam("openCompanyId", obj.OpenCompanyId)
    parameter.AddParam("authorizer", obj.Authorizer)
    parameter.AddParam("authorizerCardNo", obj.AuthorizerCardNo)
    parameter.AddParam("charger", obj.Charger)
    parameter.AddParam("mobile", obj.Mobile)
    parameter.AddParam("email", obj.Email)
    parameter.AddParam("customer", obj.Customer)
    parameter.AddParam("remind", obj.Remind)
    parameter.AddFiles("license", obj.License)
    return parameter
}
